Namespaces
Variants

std::literals::chrono_literals:: operator""s

From cppreference.net
헤더 파일에 정의됨 <chrono>
constexpr std:: chrono :: seconds
operator "" s ( unsigned long long secs ) ;
(1) (C++14부터)
constexpr std:: chrono :: duration < /*unspecified*/ >
operator "" s ( long double secs ) ;
(2) (C++14부터)

초를 나타내는 std::chrono::duration 리터럴을 형성합니다.

1) 정수 리터럴, 정확히 std:: chrono :: seconds ( secs ) 를 반환합니다.
2) 부동소수점 리터럴, std::chrono::seconds 와 동등한 부동소수점 기간을 반환합니다.

목차

매개변수

secs - 초 단위의 수

반환값

std::chrono::duration 리터럴.

가능한 구현

constexpr std::chrono::seconds operator""s(unsigned long long s)
{
    return std::chrono::seconds(s);
}
constexpr std::chrono::duration<long double> operator""s(long double s)
{
    return std::chrono::duration<long double>(s);
}

참고 사항

이 연산자는 네임스페이스 std :: literals :: chrono_literals 에서 선언되며, 여기서 literals chrono_literals 는 모두 인라인 네임스페이스 입니다. 이 연산자에 접근하려면 다음을 사용할 수 있습니다:

  • using namespace std :: literals ,
  • using namespace std :: chrono_literals , 또는
  • using namespace std :: literals :: chrono_literals .

또한, 네임스페이스 std :: chrono 내에서 using namespace literals :: chrono_literals ; 지시문은 표준 라이브러리 에 의해 제공되므로, 프로그래머가 using namespace std :: chrono ; 를 사용하여 chrono 라이브러리 의 클래스들에 접근할 경우, 해당 리터럴 연산자들도 함께 표시됩니다.

std::string 또한 operator "" s 를 정의하여 std::string 타입의 리터럴 객체를 나타내지만, 이것은 문자열 리터럴입니다: 10s 는 10초를 의미하지만, "10" s 는 두 문자로 이루어진 문자열입니다.

예제

#include <chrono>
#include <iostream>
int main()
{
    using namespace std::chrono_literals;
    std::chrono::seconds halfmin = 30s;
    std::cout << "30초는 " << halfmin.count() << "초"
        " (" << halfmin << ").\n"
        "1분 1초는 " << (1min + 1s).count() << "초.\n";
    std::chrono::duration moment = 0.1s;
    std::cout << "한 순간은 " << moment.count() << "초"
        " (" << moment << ").\n"
        "그리고 세 배는 " << (moment + 0.2s).count() << "초.\n";
}

출력:

30초는 30초 (30s).
1분 1초는 61초.
한 순간은 0.1초 (0.1s).
그리고 세 배는 0.3초.

참고 항목

새로운 duration을 생성
( std::chrono::duration<Rep,Period> 의 public 멤버 함수)